import request from '@/config/axios'

// ERP销售管理-BOM VO
export interface SaleBomVO {
  id: string // 唯一标识，VARCHAR(19)
  bomNo: string // BOM No
  customerId: string,
  customerNumber: string,
  customerName: string,
  isStop: boolean // 停用
  internalOrderId: string // 内部订单id
  internalOrderNo: string // 内部订单号
  productionOrderNo: string // 生产单号
  orderDate: Date // 订单日期
  deliveryDate: Date // 交货日期
  orderType: string // 订单类型
  quotationUnit: string // 报价单位
  customerPurchaseOrderId: string // 客户采购单号ID
  customerPurchaseOrderNo: string // 客户采购单号(订单号)
  productCode: string // 货号
  productName: string // 品名
  productName2: string // 品名2
  styleCode: string // 款型编号
  boxTypeId: string // 箱型ID
  boxTypeName: string // 箱型名称
  materialId: string // 材质ID
  materialCode: string // 材质编号
  materialName: string // 材质名称
  productionMaterialId: string // 生产材质ID
  productionMaterialCode: string // 生产材质编号
  productionMaterialName: string // 生产材质名称
  orderLength: number // 订单长
  orderWidth: number // 订单宽
  orderHeight: number // 订单高
  unit: string // 单位
  orderSpecification: string // 订单规格
  orderQuantity: number // 订单数
  sparePartsQuantity: number // 备品数
  productionQuantity: number // 生产数
  pieceAttachmentMethod: string // 片接方式
  isCustomerSpecialPrice: boolean // 是否客户特价
  areaQuotation: number // 面积报价
  unitPrice: number // 单价
  volume: number // 体积
  productionPlanQuantity: number // 排产数
  warehouseInQuantity: number // 入库数
  deliveryQuantity: number // 送货数
  printColor: string // 印刷颜色
  quotationId: string // 报价单ID
  quotationNo: string // 报价单号
  productionLength: number // 生产长
  productionWidth: number // 生产宽
  productionHeight: number // 生产高
  productionSpecification: string // 生产规格
  crossCuttingVersionNo: string // 横切版号
  isApproved: boolean // 审核
  area: number // 面积
  isTerminated: boolean // 中止
  packagingQuantity: number // 包装数
  remark: string // 备注
  isFinalized: boolean // 结单
  isPrinted: boolean // 打印
  productionRemark: string // 生产备注
  innerOuterDiameter: string // 内外径
  flangeType: string // 楞型
  dieCuttingCalculation: boolean // 模切算料
  templateWidth: number // 模板宽
  templateLength: number // 模板长
  modulus: number // 模数
  outsourcing: string // 外协
  productType: string // 产品类型
  specialColor: string // 专色
  machine: string // 机台
  nailingMethod: string // 装钉方式
  adhesionMethod: string // 粘合方式
  packagingMethod: string // 包装方式
  accessories: string // 附配件
  foldingNumber: number // 折数
  laminationType: string // 对裱类型
  deliveryMethod: string // 送货方式
  leaveVersion: boolean // 留版
  ctp: boolean // ctp
  newDiemold: boolean // 新刀模
  oldDiemold: boolean // 旧刀模
  surfaceTreatment: string // 表面处理
  productionProcess: string // 生产工艺
  customerPo: string // 客户PO
  cutCorners: boolean // 切角
  proportionQuantity: number // 配比数
  productUnit: string // 产品单位
  subcomponent: boolean // 子件
  serialNo: string // 序号
  projectNo: string // 项目号
  customerMaterial: string // 客户材质
  productDescription: string // 产品描述
  productRemark1: string // 产品备注1
  productRemark2: string // 产品备注2
  productRemark3: string // 产品备注3
  productRemark4: string // 产品备注4
  productRemark5: string // 产品备注5
  stapleBar: number // 钉条
  addPoints: number // 加分
  isExternalPurchase: boolean // 外购
  productionProcess2: string // 生产工艺
  sets: number // 套数
  thickness: number // 厚度
  unitWeight: number // 单重
  isHeavenBox: boolean // 天地盒
  heavenBoxHeight: number // 天地盒高
  heavenBoxLength: number // 天地盒长
  heavenBoxWidth: number // 天地盒宽
  amount: number // 金额
  setId: string // 套件ID
  setName: string // 套件名
  mainItemId: string // 主件ID
  mainItemName: string // 主件名
  otherRemark: string // 其他备注
  sizeSegment: string // 尺寸/码段
  multipleModelTypes: string // 多款类型
  content: string // 内容
  printColor2: string // 印色
  process: string // 做法
  other: string // 其他
  templateWidth2: number // 模板宽2
  templateLength2: number // 模板长2
  modulus2: number // 模数2
  customerManualOrderNo: string // 客户手工单号
  totalArea: number // 总面积
  packagingMethod2: string // 包装方式
  additionalCost: number // 附加费用
  parameter1: number // 参数1
  parameter2: number // 参数2
  parameter3: number // 参数3
  parameter4: number // 参数4
  parameter5: number // 参数5
  parameter6: number // 参数6
  parameter7: number // 参数7
  parameter8: number // 参数8
  parameter9: number // 参数9
  parameter10: number // 参数10
  isSameModel: boolean // 同款
  orderNumber: string // 拼单号
  bomSequenceNumber: number // BOM序号
  bomLevel: number // BOM层级
  unshippedQuantity: number // 未送货数
  unsentQuantity: number // 未送货数
  totalVolume: number // 总体积
  printVersionNo: string // 印刷版号
  bomRecalculation: boolean // BOM是否重新计价
  materialTypeId: string // 材质类型ID
  materialType: string // 材质类型
  completionOfVersion: boolean // 制版完成
  addLoss: boolean // 加损耗
  parameter11: number // 参数11
  parameter12: number // 参数12
  parameter13: number // 参数13
  parameter14: number // 参数14
  parameter15: number // 参数15
  parameter16: number // 参数16
  parameter17: number // 参数17
  parameter18: number // 参数18
  parameter19: number // 参数19
  parameter20: number // 参数20
  unitPriceAdditionalFee: number // 单价附加费
  paperboardOrderNo: string // 纸板单号
  paperboardOrderId: string // 纸板单号ID
  wechatPush: boolean // 微信推送
  costPrice: number // 成本单价
  areaCostPrice: number // 面积成本单价
  discount: number // 折扣
  grossBoardWeight: number // 毛板重量
  useInventory: boolean // 用库存
  sparePartsPercentage: number // 备品百分比
  profitMargin: number // 利润率
  discountPrice: number // 优惠
  areaUnitPrice: number // 面积单价
  totalWeight: number // 总重
  unitPriceMarkup: number // 单价加价
  customWeight: number // 自定义克重
  tag1: boolean // 标记1
  tag2: boolean // 标记2
  tag3: boolean // 标记3
  tag4: boolean // 标记4
  tag5: boolean // 标记5
  deliveryAddress: string // 送货地址
  deliveryRegion: string // 送货区域
  quantity: number // 件数
  additionalCostUnitPrice: number // 附加成本单价
  rawMaterialCostRatio: number // 原料成本占比
  squarePriceDifference: number // 平方差价
  fullPage: boolean // 整版
  splitPage: boolean // 散版
  oldVersion: boolean // 旧版
  oldModified: boolean // 旧改
  newVersion: boolean // 新版
  flatRolling: boolean // 平轧
  roundRolling: boolean // 圆轧
  oldDieCutting: boolean // 旧模
  oldDieCuttingModified: boolean // 旧模改
  newDieCutting: boolean // 新模
  choice1: boolean // 选择1
  choice2: boolean // 选择2
  choice3: boolean // 选择3
  choice4: boolean // 选择4
  noUploadFile: boolean // 不上传文件
  downSpreadAreaUnitPrice: number // 倒摊面积单价
  pressLine: number // 压线
  verticalPressLine: number // 纵压压线
  financialApproval: boolean // 财务审核
  financialApprovalTime: Date // 财务审核时间
  financialApprover: string // 财务审核人
}

// ERP销售管理-BOM API
export const SaleBomApi = {
  // 查询ERP销售管理-BOM分页
  getSaleBomPage: async (params: any) => {
    return await request.get({ url: `/erp/sale-bom/page`, params })
  },

  // 查询ERP销售管理-BOM详情
  getSaleBom: async (id: number) => {
    return await request.get({ url: `/erp/sale-bom/get?id=` + id })
  },

  // 新增ERP销售管理-BOM
  createSaleBom: async (data: SaleBomVO) => {
    return await request.post({ url: `/erp/sale-bom/create`, data })
  },

  // 修改ERP销售管理-BOM
  updateSaleBom: async (data: SaleBomVO) => {
    return await request.put({ url: `/erp/sale-bom/update`, data })
  },

  // 删除ERP销售管理-BOM
  deleteSaleBom: async (id: number) => {
    return await request.delete({ url: `/erp/sale-bom/delete?id=` + id })
  },

  // 导出ERP销售管理-BOM Excel
  exportSaleBom: async (params) => {
    return await request.download({ url: `/erp/sale-bom/export-excel`, params })
  },

// ==================== 子表（ERP销售管理-BOM-用料用） ====================

  // 获得ERP销售管理-BOM-用料用分页
  getSaleBomMaterialPage: async (params) => {
    return await request.get({ url: `/erp/sale-bom/sale-bom-material/page`, params })
  },
  // 新增ERP销售管理-BOM-用料用
  createSaleBomMaterial: async (data) => {
    return await request.post({ url: `/erp/sale-bom/sale-bom-material/create`, data })
  },

  // 修改ERP销售管理-BOM-用料用
  updateSaleBomMaterial: async (data) => {
    return await request.put({ url: `/erp/sale-bom/sale-bom-material/update`, data })
  },

  // 删除ERP销售管理-BOM-用料用
  deleteSaleBomMaterial: async (id: number) => {
    return await request.delete({ url: `/erp/sale-bom/sale-bom-material/delete?id=` + id })
  },

  // 获得ERP销售管理-BOM-用料用
  getSaleBomMaterial: async (id: number) => {
    return await request.get({ url: `/erp/sale-bom/sale-bom-material/get?id=` + id })
  },

// ==================== 子表（ERP销售管理-BOM-工艺） ====================

  // 获得ERP销售管理-BOM-工艺分页
  getSaleBomProcessPage: async (params) => {
    return await request.get({ url: `/erp/sale-bom/sale-bom-process/page`, params })
  },
  // 新增ERP销售管理-BOM-工艺
  createSaleBomProcess: async (data) => {
    return await request.post({ url: `/erp/sale-bom/sale-bom-process/create`, data })
  },

  // 修改ERP销售管理-BOM-工艺
  updateSaleBomProcess: async (data) => {
    return await request.put({ url: `/erp/sale-bom/sale-bom-process/update`, data })
  },

  // 删除ERP销售管理-BOM-工艺
  deleteSaleBomProcess: async (id: number) => {
    return await request.delete({ url: `/erp/sale-bom/sale-bom-process/delete?id=` + id })
  },
  
  // 获取所有客户
  getAllBaseCustomer: async () => {
    return await request.get({ url: `/erp/sale-bom/list-all-customer` })
  },
  
  // 获取所有材质
  getAllBaseMaterial: async () => {
    return await request.get({ url: `/erp/sale-bom/list-all-material` })
  },
    
  // 获取所有箱型
  getAllBaseBoxType: async () => {
    return await request.get({ url: `/erp/sale-bom/list-all-box-type` })
  },
  
  // 获取所有工序
  getAllBaseProcess: async () => {
    return await request.get({ url: `/erp/sale-bom/list-all-process` })
  },
  
  // 获取所有压线类型
  getAllBasePressingType: async () => {
    return await request.get({ url: `/erp/sale-bom/list-all-pressingtype` })
  },

  // 获得ERP销售管理-BOM-工艺
  getSaleBomProcess: async (id: number) => {
    return await request.get({ url: `/erp/sale-bom/sale-bom-process/get?id=` + id })
  }
}